package pack1;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;


/**
 * Created by jack on 2017/7/4.
 * 事件发布类
 */
//@Component泛指组件，当组件不好归类的时候，我们可以使用这个注解进行标注
//用@Component把listener注册成了spring的组件，这样listener的用途是在runtime的时候解耦
//而如果我们把listener用配置文件的方式注册的话，主要的用途是在部署时解耦
@Component
public class DemoPublisher
{
    @Autowired
    //注入ApplicationContext用来发布事件
    ApplicationContext applicationContext;//1

    public void publish(String  msg)
    {
        System.out.println("DemoPublisher：：publish（）");
        //使用ApplicationContext的publishEvent方法来发布
        applicationContext.publishEvent(new DemoEvent(this,msg)); //2
    }
}
